单一职责原则(SRP)
Single Responsibility Principle(SRP)一个类或者模块只负责完成一个职责。
模块:模块看做比类更加抽象的概念,模块可以看做比类更加粗粒度的代码块,其中包含多个类。
设计准则
- 不要设计大而全的类
- 设计粒度小,功能单一的类
- 一个类包含两个以上业务不相干的功能,应该拆分成功能单一,粒度更细的类
单一职责的判断准则
一个类是否职责单一的判断,是很难拿捏的。
案例
1 | public class UserInfo{ |
UserInfo的设计是否满足单一职责原则?这个问题不能脱离实际的应用场景
- 满足单一职责原则—用户的地址信息和其他信息一样都是用作展示。
- 不满足单一职责原则—如果用户的地址信息需要用其他用途,如电商物流中,则需要把用户的地址信息拆分出来。
没有非常明确的、可以量化的标准来判定一个类是否足够单一。所以我们在开发工作中,没必要过度设计。我们可以先设计粗粒度的类,随着业务发展,可以将粗粒度的类拆分成几个细粒度的类。
判断准则
- 类中代码行数、函数或属性较多,影响了代码的可读性和可维护性。
- 类依赖的其他类过多,不符合高内聚、低耦合的设计思想
- 私有方法过多,考虑将私有方法独立到新的类,设置为public。
- 很难讲类起一个合适的名字,难以用一个业务名词来概括。
最终目的是提高代码的可读性、可扩展性、复用性、可维护性,所以无论是应用那种设计原则或者设计模式,都应该一次作为考量标准。